package com.chao.a.service;

import com.chao.a.config.FeignConfig;
import feign.Param;
import feign.RequestLine;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @author Luck Chao
 * @Date: 2021/12/07
 */
@FeignClient(value = "web-dm-B", configuration = FeignConfig.class)
public interface WebBService {

    @RequestLine("GET /index")
    String index();

    /**
     * 此处注意有参数传递时，最好使用 POST 请求，否则需要引入其他的注解，
     * 因为 Feign 是基于 HTTP 来实现的，引入http的传参注解又会存在编译或者优雅相关问题
     * @param input
     * @return
     */
    @RequestLine("POST /1")
    String index1(@RequestBody String input);

    /**
     * GET 请求传参后，B端就报错显示，发过来的请求是 POST 形式的，无法匹配支持
     * Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
     * @param input
     * @return
     */
    @RequestLine("GET /4")
    String index4(@Param("input") String input);

    /**
     * GET 请求传参, 如果特别想传值且参数较少，可以考虑放置 url 中
     * @param num
     * @return
     */
    @RequestLine("GET /3/{num}")
    String index3(@Param("num") String num);

    /**
     * GET 请求传参,放置 url 中的丑丑的示例
     * @param str
     * @return
     */
    @RequestLine("GET /2?str={str}")
    String index2(@Param("str") String str);













}
